// ripasso matrici.cpp : Defines the entry point for the console application.
//
/*
scrivere un programma che preveda un menù con le seguenti funzionalita:
1: caricamento  random di una matrice n*n di interi
2: calcola la somma della diagonae principale e secondaria
3: letta in input il numero di riga e il numero di colonna calcola la differenza degli elementi sulla riga e gli elementi della colonna tot riga- totcolonna
N.B. il programma deve usare funzioni oprocedure ai quali devo pasare i parametri che le funzioni possono modificare (puntatori).
*/

#include "stdafx.h"
#include <iostream>
#include <time.h>
#define NC 4
#define NR 4
using namespace std;
void menù();
void carica(int matr[][NC]);
void somma(int matr[][NC], int *s, int*s1);
void calcolo_differenza(int matr[][NC], int *dif, int r, int c);
void visualizza(int matr[][NC]);
int main()
{
	menù();
    return 0;
}
void menù() {
	int scelta = 0;
	int matr[NR][NC];
	int sommad=0;
	int sommad2=0;
	int r;
	int c;
	int diff;
	carica(matr);
	do {
		system("cls");
		printf("menù\n");
		printf("0.esci\n");
		printf("1.somma diagonale pricipale\n");
		printf("2. calcolo colonna (punto3)\n");
		scanf_s("%d", &scelta, sizeof(int));
		switch (scelta) {
		case 0:
			printf("arrivederci e lasciate la mancia\n");
			system("pause");
			break;
		case 1:
			somma(matr, &sommad, &sommad2);
			visualizza(matr);
			printf("diagonale %d\n", sommad);
			printf("diagonale1 %d\n", sommad2);
			system("pause");
			break;
		case 2:
			printf("inserire la riga \n");
			scanf_s("%d", &r, sizeof(int));
			printf("inserire la colonna \n");
			scanf_s("%d", &c, sizeof(int));
			calcolo_differenza(matr, &diff, r, c);
			visualizza(matr);
			printf("la differenza è %d", diff);
			system("pause");
			break;
		default:
			printf("valore non valido\n");
			break;

		}


	} while (scelta != 0);
	
}
void visualizza(int matr[][NC]) {
	for (int i = 0; i < NR; i++) {
		for (int j = 0; j < NC; j++) {
			printf("%d ", matr[i][j]);
		}
		printf("\n");
	}
}

void carica(int matr[][NC]) {
	srand(time(NULL));
		for (int i = 0; i < NR; i++) {
			for (int j = 0; j < NC; j++) {
				matr[i][j] = 1 + rand() % (20+1);
			}
		}
}
void somma(int matr[][NC], int *s, int*s1) {
	for (int i = 0; i < NR; i++) {
		for (int j = 0; j < NC; j++) {
			if (i == j) {
				*s = matr[i][j]+matr[i][j];
			}
			if ((i+j)==NR) {
				*s1 =matr[i][j]+matr[i][j];
			}
		}
	}
}
void calcolo_differenza(int matr[][NC], int *dif, int r, int c) {
	int r1=0;
	int c1=0;
	for (int i = 0; i < NR; i++) {
		if (i == r) {
			for (int j = 0; j < NC; j++) {
				r1 += matr[i][j];
			 }
			break;
		}
	}
	for (int g = 0; g < NC; g++) {
		if (g == c) {
			for (int f = 0; f < NR; f++) {
				c1 += matr[f][g];
			}
			break;
		}
	}
	printf("r1 %d\n", r1);
	printf("c1%d\n", c1);
	*dif = r1 - c1;
}
